package com.itlong.cloud.sdk.dao;

import com.itlong.cloud.POJO.PO.AppUserInfoPO;
import com.itlong.cloud.POJO.PO.AppUserProjectPO;
import com.itlong.cloud.POJO.PO.AppUserRoomPO;
import com.itlong.cloud.POJO.PO.BuildInfoPO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      云对讲SDK批量添加用户房间Dao
 * </desc>
 *
 * @createDate 2018/05/17
 */
@Mapper
@Repository
public interface ICloudTalkSDKServerSaveUserRoomDao extends IAbstractBaseDao<BuildInfoPO> {

    /**
     * <desc>
     *      根据手机号码查询app_user_info信息
     * <desc/>
     *
     * @param phoneNum 手机号码
     * @return AppUserInfoPO 返回对象集
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    AppUserInfoPO getUserByPhoneNum(@Param("phoneNum") String phoneNum);

    /**
     * <desc>
     *      保存用户信息app_user_info
     * <desc/>
     *
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    void save(Map<String,Object> map);

    /**
     * <desc>
     *      更新用户信息app_user_info
     * <desc/>
     *
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    void update(Map<String,Object> map);

    /**
     * <desc>
     *      根据参数查询用户小区关联表
     * <desc/>
     * @param       params  查询参数
     * @return      用户小区关联对象集
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    List<AppUserProjectPO> getUserProjectByParams(Map<String, Object> params);

    /**
     * <desc>
     *      更新用户小区关联表
     * </desc>
     *
     * @param userProjectPO      待更新的用户小区关联对象
     * @return      更新个数
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    Integer updateUserProjectInfo(AppUserProjectPO userProjectPO);

    /**
     * <desc>
     *      根据参数查询用户房间关联表
     * <desc/>
     * @param   params  查询参数
     * @return  List<AppUserRoomPO>    查询出的用户房间结果集
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    List<AppUserRoomPO> getUserRoom(Map<String, Object> params);

    /**
     * <desc>
     *       批量更新用户房间信息表
     * <desc/>
     * @param   userRoomPOList  待更新的对象集合
     * @return  更新的个数
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    Integer batchUpdateUserRoomInfo(List<AppUserRoomPO> userRoomPOList);

    /**
     * <desc>
     *       批量添加用户房间信息表
     * <desc/>
     * @param   saveMapList  待添加的对象转换成map后的集合
     * @return  添加的个数
     * @author JuGuang.S
     * @createDate 2018/05/17
     */
    Integer batchSaveUserRoomInfo(List<Map<String,Object>> saveMapList);

}
